<?php
/*
NEOS PHP Framework
	Todos os direitos reservados - proibida a utilização deste material sem prévia autorização.
	Paulo R. B. Rocha - prbr@ymail.com
	http://neophp.tk
*/

class Editcurso  extends NEOS_models{
	var $add_bd_sucesso;
	var $erro;
	var $conflito;	
	function add_minicurso($data)
	{
		if(!$this->VerificaCampo($data)){
			$this->add_bd_sucesso = false;
			$this->erro = "Erro no formulario";
			return;
		}

		$minicurso['nome'] = $data["nome"];		 	 	 	 	 	 	
		$minicurso['descricao'] = $data["descricao"];	 	 	 	 	 	 	
		$minicurso['carga_horaria'] = $data["carga_horaria"];		 	 	 	 	 	 	
		$minicurso['horarios'] = $data["horarios1"].";". $data["horarios2"];	 	 	 	 	 	 	
		$minicurso['datas'] = $this->data_bd($data["datas1"]) .";". $this->data_bd($data["datas2"]);		 	 	 	 	 	 	
		$minicurso['pre_requisitos'] = $data["pre_requisitos"];
		$minicurso['professor'] = $data["professor"];
		$minicurso['n_vagas'] = $data["n_vagas"];
		_db("BEGIN");
		
		$query1 = _db('minicursos',$minicurso,'','insert'); //o vetor $dados deve ter a mesma ordem da tabela
		if($query1 < 0){
			_db("ROLLBACK");
			$this->add_bd_sucesso = false;
			$this->erro = "Não foi possivel adicionar o minicurso";
			return;
		}
		
		
		_db("COMMIT");
		
		 $this->add_bd_sucesso = true;
	}

	function matricula_minicurso($dados){

        $id_usuario = $_SESSION['idUsuario'];
		
		
		$mcursos;
		$aux = array_keys($dados);
		foreach($aux as $i){
			$aux2 = explode( "=", $i);
			$mcursos[] = $aux2[1];
		}
		
		
		_db("BEGIN");
		foreach($mcursos as $i){
			$matricula["usuario_id"] = $id_usuario;		 	 	 	 	 	 	
			$matricula["minicurso_id"] = $i; 		 	 	 	 	 	 	
			$matricula["status_id"] = 3;
			
			//verifica se tem vagas
			$sql1 = _db("SELECT * FROM `participacoesminicursos` WHERE minicurso_id = '".$i."'");
			$sql2 = _db("SELECT n_vagas FROM `minicursos` WHERE id = '".$i."'");

			//echo "<br /> $sql1= ".count($sql1);
			//echo "<br /> $sql2= ".(int)$sql2[0]->n_vagas;			
			if( (int)count($sql1) >= (int)$sql2[0]->n_vagas ){
				_db("ROLLBACK");
				$this->add_bd_sucesso = false;
				$this->erro = "Não tem vagas disponiveis no minicurso";
				return;
			}
			
			
			//faz a matricula
			//$query1 = _db('participacoesminicursos',$matricula,'','insert');
			$query1 = _db("INSERT INTO participacoesminicursos(USUARIO_ID, MINICURSO_ID, STATUS_ID, DATAINSCRICAO) VALUES ('" . $matricula['usuario_id'] . "','".$matricula['minicurso_id']."','".$matricula['status_id']."',now() )");
			if($query1 < 0){
				_db("ROLLBACK");
				$this->add_bd_sucesso = false;
				$this->erro = "Não foi possivel matricular no minicurso";
				return;
			}
		}
		
		_db("COMMIT");
		
		 $this->add_bd_sucesso = true;
		
			
	}

	function desmatricula_minicurso($dados){
		
        $id_usuario = $_SESSION['idUsuario'];
		
		$mcursos;
		$aux = array_keys($dados);
		foreach($aux as $i){
			$aux2 = explode( "=", $i);
			$mcursos[] = $aux2[1];
		}
		
		_db("BEGIN");
		foreach($mcursos as $i){
		
			//deleta a matricula
			$sql = "DELETE FROM participacoesminicursos WHERE usuario_id='".$id_usuario."' and minicurso_id = '".$i."'";
			$query1 = _db($sql);
			//echo $sql;
			if($query1 < 0){
				_db("ROLLBACK");
				$this->add_bd_sucesso = false;
				$this->erro = "Não foi possivel desmatricular no minicurso";
				return;
			}
		}
		
		_db("COMMIT");
		
		 $this->add_bd_sucesso = true;
		
			
	}
	
	function editar_minicurso($data){
		
		if(!$this->VerificaCampo($data)){
			$this->add_bd_sucesso = false;
			$this->erro = "Erro no formulario";
			return;
		}
		
		$minicurso['nome'] = $data["enome"];		 	 	 	 	 	 	
		$minicurso['descricao'] = $data["edescricao"];	 	 	 	 	 	 	
		$minicurso['carga_horaria'] = $data["ecarga_horaria"];		 	 	 	 	 	 	
		$minicurso['horarios'] = $data["ehorarios1"].";". $data["ehorarios1"];	 	 	 	 	 	 	
		$minicurso['datas'] = "0";//$this->data_bd($data["edatas1"]) .";". $this->data_bd($data["edatas2"]);		 	 	 	 	 	 	
		$minicurso['pre_requisitos'] = $data["epre_requisitos"];
		$minicurso['professor'] = $data["eprofessor"];
		$minicurso['n_vagas'] = $data["en_vagas"];
		
		$sql = "UPDATE minicursos SET nome = '".$minicurso['nome']."', descricao = '".$minicurso['descricao']."', 	 	 	 	 	 	
carga_horaria = '".$minicurso['carga_horaria']."', horarios = '".$minicurso['horarios']."', datas = '".$minicurso['datas']."', 		 	 	 	 	 	 	
pre_requisitos = '".$minicurso['pre_requisitos']."', professor = '".$minicurso['professor']."', n_vagas = '".$minicurso['n_vagas']."' WHERE id = '".$data["eid"]."';";
		echo $sql;
		_db("BEGIN");
		$query1  = _db($sql);
		if($query1 < 0){
			_db("ROLLBACK");
			$this->add_bd_sucesso = false;
			$this->erro = "Não foi possivel adicionar o minicurso";
			return;
		}
		_db("COMMIT");
			$this->add_bd_sucesso = true;
	}

	
	function data_bd($data){
		$nova  = explode("/", $data);
		$nova_data = $nova[2]."-".$nova[1]."-".$nova[0];
		return $nova_data;

	}
	
	function VerificaCampo($data){
		 foreach( $data as $i)
			if( $i == '')
				return false;
	
		return true;
	}
	
	function VerificaConflito($dados)
	{
		$this->conflito = false;
        $id_usuario = $_SESSION['idUsuario'];

		$mcursos;
		$aux = array_keys($dados);
		foreach($aux as $i){
			$aux2 = explode( "=", $i);
			$mcursos[] = $aux2[1];
		}
         
         $sql = "SELECT M.DATAS, M.HORARIOS, M.NOME FROM participacoesminicursos PM
            JOIN MINICURSOS M ON(PM.MINICURSO_ID = M.ID) WHERE usuario_id='".$id_usuario."'";
         $query = _db($sql);
         
         if(isset($query[0]))
		{
			
			foreach($query as $result)
			{
				$datas_user[] = explode(";",$result->DATAS);
				$horarios_user[] = explode(";",$result->HORARIOS);
				$nome_user[] = explode(";",$result->NOME);
			}
		}

		foreach($mcursos as $i){
			
            $sql1 = "SELECT M.DATAS, M.HORARIOS, M.ID, M.NOME FROM minicursos M WHERE M.id='" .$i."'";
			
			$query1 = _db($sql1);					
			$datas_select[] = explode(";",$query1[0]->DATAS);
			$horarios_select[] = explode(";",$query1[0]->HORARIOS);
			$id_select[] = explode(";",$query1[0]->ID);
			$nome_select[] = explode(";",$query1[0]->NOME);
			
		}
		
		$tam_select = count($datas_select);	
		
		for($g = 0; $g<$tam_select; $g++)
		{
			$horarios_select[$g][0] = explode(" - ", $horarios_select[$g][0]);
			$horarios_select[$g][1] = explode(" - ", $horarios_select[$g][1]);
		}
		
		foreach($query1 as $result)
		{		
			$result->DATAS = explode(";",$result->DATAS);
			$result->HORARIOS = explode(";",$result->HORARIOS);					
			$result->HORARIOS[0] = explode(" - ",$result->HORARIOS[0]);
			$result->HORARIOS[1] = explode(" - ",$result->HORARIOS[1]);	
			
			for($w = 0; $w<$tam_select; $w++)
			{
				if($id_select[$w][0] != $result->ID)
				{					
							
					if(strcmp($datas_select[$w][0],$result->DATAS[1]) == 0)
						if((strcmp($horarios_select[$w][0][0],$result->HORARIOS[0]) >=0 && strcmp($horarios_select[$w][0][0],$result->HORARIOS[0][1]) <=0)
						|| (strcmp($horarios_select[$w][1][0],$result->HORARIOS[0]) >=0 && strcmp($horarios_select[$w][1][1],$result->HORARIOS[1][1]) <=0))
						{
							$this->conflito = true;
							$this->erro = "Não foi possivel cadastrar nos Minicursos selecionados, pois existe um conflito de horario entre os seguinte
							minicursos '".$nome_select[$w][0]."' e '".$result->NOME."'";
						}
					
					if(strcmp($datas_select[$w][1],$result->DATAS[1]) == 0)
						if((strcmp($horarios_select[$w][0][0],$result->HORARIOS[0][0]) >=0 && strcmp($horarios_select[$w][0][0],$result->HORARIOS[0][1]) <=0)
						|| (strcmp($horarios_select[$w][1][0],$result->HORARIOS[1][0]) >=0 && strcmp($horarios_select[$w][1][1],$result->HORARIOS[1][1]) <=0))
						{
							$this->conflito = true;
							$this->erro = "Não foi possivel cadastrar nos Minicursos selecionados, pois existe um conflito de horario entre os seguinte
							minicursos '".$nome_select[$w][0]."' e '".$result->NOME."'";
						}
				}
			}			
		}
		
		
		if(!isset($datas_user))
			return $this->conflito;	
			 
		$tam_user = count($datas_user);
		
		for($h = 0; $h<$tam_select-1; $h++)
		{
			$horarios_user[$h][0] = explode(" - ", $horarios_user[$h][0]);
			$horarios_user[$h][1] = explode(" - ", $horarios_user[$h][1]);
		}
				
		for($i = 0; $i<$tam_user; $i++)
			for($j = 0; $j<$tam_select; $j++)
			{
				
				if(strcmp($datas_user[$i][0],$datas_select[$j][0]) == 0 ||  strcmp($datas_user[$i][0],$datas_select[$j][1]) == 0 
					|| strcmp($datas_user[$i][1],$datas_select[$j][0]) == 0 || strcmp($datas_user[$i][1],$datas_select[$j][1]) == 0)
					if(strcmp($horarios_user[$i][0][1],$horarios_select[$j][0][1]) >= 0 && strcmp($datas_user[$i][0][1],$datas_select[$j][0][1]) <= 0
					|| strcmp($horarios_user[$i][1][0],$horarios_select[$j][1][0]) >= 0 && strcmp($datas_user[$i][1][1],$datas_select[$j][1][1]) <= 0)
					{
						$this->conflito = true;
						$this->erro = "Não foi possivel cadastrar nos Minicursos selecionados, pois existe um conflito de horario entre os seguinte
						minicursos '".$nome_user[$i][0]."'e '".$nome_select[$j][0]."'";
					}	
			}
		return $this->conflito;
	}
}
